6.Shading 1(Illumination,Shading)(照明和着色
6.Shading 1(Illumination,Shading)(照明和着色)
小葵花妈妈课堂开课啦(误)
Z-Buffer(深度缓冲)
Visibiliy(可见性):如何把多个物体显示在屏幕上,且位置的对应关系是对的
画家算法:先将远的物体光栅化,如何再逐渐光栅化近的物体
因为画家算法没有办法解决这种杠精问题
所以大伙引入了Z-Buffer(深度缓冲)
Z-Buffer(深度缓冲):
我们之前默认相机放在原点离-z方向看,这里假设z越小离我们越近
同时生成一个frame buffer和一个z buffer(维护每个像素的深度)
就像这样
算法如图所示
假设这里的R是无限大,深度小的(即离我们更近)就会把深度大的遮挡住
这里我们维护的对象是每一个像素
透明物体没办法渲染!!!!!!
小结
总结一下我们目前学习的内容
- 将模型变换(model)
- 将视图变换(view)
- 三维投影到屏幕(projection)
- 进行光栅化,得到采样结果(rasterization)
だから
shading(着色)他来啦!!!
shading(着色)
来跟我读:谢顶
在图形学中,我们定义着色为对不同物体使用不同材质,不同材质和光线的相互作用有不同的方法
我们可以看到高光(specular highlight),漫反射(Diffuse reflection),环境光(ambient lighting)
diffuse reflection in Blinn-Phong Reflectance Model(布林冯中的漫反射)
我们再来做一些定义:
shading point:考虑一个点(在极小范围内的一个平面)的结果
surface normal(平面法线)
view direction(观察方向)
light direction(光照方向)
surface parameters(表面参数):例如颜色,亮度
此处所有向量为单位向量
shading!=shadow!!!!
为什么同一束光打到一个点,角度不同亮度就不同呢?
我们假设光离散成六根光线,看得出来物体法线和光的夹角越小,物体表面受到的光就越少(看我们这里第一幅图,物体表面法线和光平行)
更科学的理解:光是一种能量,所以考虑收到的能量有多少
接下来是一个我并不想关心也不想记住推导过程的公式(请返回原视频56分处)
若光源强度(能量)为I,则距离光源距离r的光强度(能量)等于I/r2
我们可以算出光源到点的距离r,就可以求出点位置有多少能量,然后再和其余弦,漫反射系数,进行相乘。
点位置的能量:(I/r2)
余弦是图中光照方向和法线点乘:max(0,n·l)
(也就是图中的,加上一个0取max是因为我们讨论光的反射,若余弦小于0/角度为负数则没有任何物理意义)
定义漫反射系数:kd
(若kd=1,则表示这个点完全不吸收能量,若kd=0,emm你可以认为这个点是黑洞)
最后就能求出ld(这个点应该表现多少光)
我们看到公示里面没有涉及到观测方向,所以漫反射结果和观测方向没有关系
完成啦完成啦,4.16 19:00,今天是周五玩游戏去啦